package com.ybc.创建和销毁对象;

public class MyTest {

    public static void main(String[] args) {
//        test1();
//        test2();
//        test3();

    }




    static void test1(){
        UseBuilder useBuilder = new UseBuilder.MyBuilder()
                .age(18)
                .name("ybc")
                .build();

        System.out.println(useBuilder);
    }


    static void test2(){
        String name1 = "ybc".intern();//与下面是等价的
        String name2 = "ybc";
        String name3 = "ybc";

        System.out.println(name1 == name2);
        System.out.println(name2 == name3);

    }

    //尽量用基本类型
    public static void test3(){
        //计算0到最大int的和的时间
        long start = System.currentTimeMillis();
        Long sum = 0L;
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            sum += i;
        }
        System.out.println("装箱的求和时间"+(System.currentTimeMillis() - start));


         start = System.currentTimeMillis();
        long suml = 0L;
        for (int i = 0; i < Integer.MAX_VALUE; i++) {
            suml += i;
        }
        System.out.println( "基本类型的求和时间"+(System.currentTimeMillis() - start));
    }

    //用try with resource 来关闭资源 是语法糖 底层会自动 生成finally 代码块来关闭资源+附加异常
//    static void test4(){
//        try (MyResource r = new MyResource()) {
//            r.doSomething();
//        }
//
//        //等价于下面
//        MyResource r = new MyResource();
//        Throwable primaryException = null;
//
//        try {
//            r.doSomething();
//        } catch (Throwable t) {
//            primaryException = t;
//            throw t;
//        } finally {
//            if (r != null) {
//                if (primaryException != null) {
//                    try {
//                        r.close();
//                    } catch (Throwable t2) {
//                        primaryException.addSuppressed(t2); // 附加异常
//                    }
//                } else {
//                    r.close();
//                }
//            }
//        }
//
//    }



}
